AppStack 提供环境删除能力,但实际应用中还会存在希望手工进行环境资源清理的场景,可以参考如下操作步骤。
非工作负载类型资源删除
手工运维进行环境删除时,非工作负载类资源(如:Service、Ingress、ConfigMap、Secret、PersistentVolumeClaim等),可以直接使用 kubectl 命令或其他方式删除。
如,执行以下命令删除一个.metadata.name
值为service-demo
的Service资源。更多 kubectl 命令参见。
kubectl delete service service-demo
工作负载类型资源删除
AppStack 提供基于 开放应用模型 Open Application Model (OAM) 的部署增强能力,使用OAM部署的工作负载类资源会被集群中的OAM runtime纳管(如:Deployment),直接删除一段时间后会被重建。手工删除需要参考下面的操作步骤。
说明:以下示例使用 kubectl 并假设可以从本地开发机连接到集群;假定待删除的工作负载的 .metadata.name
值为 deploy-demo
,所在的命令空间名字为 namespace-demo
。
1. 确认工作负载
执行以下命令查看待删除的工作负载。
kubectl get application deploy-demo -n namespace-demo
kubectl get componentdefinition deploy-demo -n namespace-demo
2. 确认定位标签
若第1步中查找的编排对象和组件定义都存在,执行以下命令查看编排对象。
kubectl get application deploy-demo -n namespace-demo -o=yaml
编排对象形如:
metadata:
name: "deploy-demo"
namespace: "namespace-demo"
annotations:
app.oam.dev/rollout-template: "true"
app.oam.dev/rolling-components: "deploy-demo"
appstack.aliyun.com/change-made-by: "1f061dfd-d612-4628-914f-14b4c207fe5f"
labels:
appstack/appconfig-selector: "deploy-demo"
appstack/current-revision: "deploy-demo-v1"
devops.aliyun.com/app-name: "app1028836"
devops.aliyun.com/env-name: "production"
devops.aliyun.com/org-id: "5ebbc0******************"
apiVersion: "core.oam.dev/v1beta1"
kind: "Application"
spec:
components:
- name: "deploy-demo"
type: "deploy-demo"
properties: {}
traits: []
找到编排对象中如下三个标签,它们分别对应 应用名称、环境名称、云效企业ID:
devops.aliyun.com/app-name: "app1028836"
devops.aliyun.com/env-name: "production"
devops.aliyun.com/org-id: "5ebbc0******************"
3. 使用标签清理发布执行辅助对象
使用第2步中记录下 应用名称、环境名称、云效企业ID 的标签,执行以下命令进行发布执行辅助对象(approllout)的删除。
kubectl delete approllout -l devops.aliyun.com/app-name=app1028836,devops.aliyun.com/env-name=production,devops.aliyun.com/org-id=5ebbc0****************** -n namespace-demo
执行以下命令确认辅助对象是否删除完成,当kubectl输出查不到结果的信息时,表明删除完成。
kubectl get approllout -l devops.aliyun.com/app-name=app1028836,devops.aliyun.com/env-name=production,devops.aliyun.com/org-id=5ebbc0****************** -n namespace-demo
4. 清理OAM工作负载托管对象
执行以下命令清理OAM工作负载托管对象。
kubectl delete application deploy-demo -n namespace-demo
执行以下命令确认工作负载托管对象是否删除完成,当kubectl输出查不到结果的信息时,表明删除完成。
kubectl get application deploy-demo -n namespace-demo
如果希望确认deployment删除进度,可以执行以下命令,当kubectl输出查不到结果的信息时,表明deployment的级联清理已经完成。
kubectl delete componentdefinition deploy-demo -n namespace-demo
5. 清理组件定义元数据
执行以下命令删除组件定义元数据。
kubectl delete componentdefinition deploy-demo -n namespace-demo
执行以下命令确认组件定义元数据是否删除完成,当kubectl输出查不到结果的信息时,表明删除完成。
kubectl get componentdefinition deploy-demo -n namespace-demo
至此,工作负载类型的资源清理完毕。